/*
 * Copyright 2009 Al Phillips.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package xsd4gorm

import xsd4gorm.model.Domain
import xsd4gorm.xsd.XSDChomper
import xsd4gorm.xsd.support.Resolver

/**
 *
 * @author Al Phillips
 */
public class Xsd4Gorminator {           

    private def file

    def Xsd4Gorminator(file){
        this.file = file;
    }

    public boolean isValidXSD(){
        // TODO: add validation
        /*def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
        def schema = factory.newSchema(new StreamSource(new StringReader(xsd)))
        def validator = schema.newValidator()
        validator.validate(new StreamSource(new StringReader(XmlExamples.CAR_RECORDS)))*/        
        true    
    }

    public Domain generate(){

        // Slurp
        def xsd = new XmlSlurper().parse(this.file)

        // Construct GORM model
        Domain domain = new Domain()
        XSDChomper chomper = new XSDChomper()
        chomper.chomp(xsd, domain)

        // resolve
        Resolver resolver = new Resolver()
        resolver.resolveTypes(domain)
        resolver.resolveClasses(domain)
        
        domain
    }

}